/*
 * Iterator.h
 *
 *  Created on: Sep 21, 2009
 *      Author: jbarreneche
 */
#ifndef PATHITERATOR_H_
#define PATHITERATOR_H_

#include "util/LinkedList.h"
#include "core/Vertex.h"

namespace path {

class Iterator {
public:
	Iterator(util::LinkedList<Edge>::Iterator iteratedPath);
	virtual ~Iterator();
	virtual bool hasNext();
	virtual void next();
	// Vertice actual de la iteracion
	Vertex* currentVertex();
	// Arista que se va a atravesar para llegar al proximo vertice
	Edge* transversingEdge();
	// Vertice destino de la arista que se atraviesa
	Vertex* nextVertex();
private:
	util::LinkedList<Edge>::Iterator iterator;
	Edge* currentEdge;
};
}

#endif /* ITERATOR_H_ */
